/*
Copyright 2011 Michael Mallon

This file is part of SQAT.

SQAT is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

SQAT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with SQAT.  If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PRODUCT_H_
#define PRODUCT_H_
#include <list>
#include <complex>
#include <string>
#include "LadderOperator.h"
#include "Coefficient.h"

class Product {
public:
	Product();
	virtual ~Product();
	Product & operator=(Product p);
	void add(LadderOperator o);
	void addList(list<LadderOperator> a);
	list<LadderOperator> getComponents(void);
	complex<Coefficient> getCoefficient(void);
	void setCoefficient(complex<Coefficient> co);
	Product getConjugate(void);
	void conjugate();
private:
	list<LadderOperator> components;
	complex<Coefficient> coefficient;
};

#endif /* PRODUCT_H_ */
